home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / gnustuff / tos / pmathlib / pmlsrc18.zoo / pmlsrc / math.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-03-30  |  4.8 KB  |  176 lines

  1. #ifndef _MATH_H
  2. #define _MATH_H
  3.  
  4. /************************************************************************
  5.  *                                    *
  6.  *                N O T I C E                *
  7.  *                                    *
  8.  *            Copyright Abandoned, 1987, Fred Fish        *
  9.  *                                    *
  10.  *    This previously copyrighted work has been placed into the    *
  11.  *    public domain by the author (Fred Fish) and may be freely used    *
  12.  *    for any purpose, private or commercial.  I would appreciate    *
  13.  *    it, as a courtesy, if this notice is left in all copies and    *
  14.  *    derivative works.  Thank you, and enjoy...            *
  15.  *                                    *
  16.  *    The author makes no warranty of any kind with respect to this    *
  17.  *    product and explicitly disclaims any implied warranties of    *
  18.  *    merchantability or fitness for any particular purpose.        *
  19.  *                                    *
  20.  ************************************************************************
  21.  */
  22.  
  23.  
  24. /*
  25.  *  FILE
  26.  *
  27.  *    math.h    include file for users of portable math library
  28.  *
  29.  *  SYNOPSIS
  30.  *
  31.  *    #include <math.h>
  32.  *
  33.  *  DESCRIPTION
  34.  *
  35.  *    This file should be included in any user compilation module
  36.  *    which accesses routines from the Portable Math Library (PML).
  37.  *
  38.  */
  39.  
  40.  
  41. #if defined(__cplusplus)
  42. extern "C" {
  43. #endif
  44.  
  45. #ifndef __STRICT_ANSI__
  46. /*
  47.  *    Create the type "COMPLEX".  This is an obvious extension that I
  48.  *    hope becomes a part of standard C someday.
  49.  *
  50.  */
  51.  
  52. typedef struct cmplx {            /* Complex structure */
  53.     double real;            /* Real part */
  54.     double imag;            /* Imaginary part */
  55. } COMPLEX;
  56.  
  57. /* exceptions ++jrb */
  58. typedef enum  {
  59.     DOMAIN      = 1,
  60.     SING        = 2,
  61.     OVERFLOW    = 3,
  62.     UNDERFLOW   = 4,
  63.     TLOSS       = 5,
  64.     PLOSS       = 6
  65. } exception_type;
  66.  
  67. struct exception {
  68.     exception_type    type;    /* exception type */
  69.     char        *name;    /* function in which it occured */
  70.     double        arg1;    /* an arg */
  71.     double        arg2;    /* another arg */
  72.     double        retval; /* val to return */
  73. };
  74.  
  75. #endif /* __STRICT_ANSI__ */
  76.  
  77. extern const double _infinitydf;    /* in normdf.cpp */
  78.  
  79. #define HUGE_VAL  (_infinitydf)
  80. #define HUGE HUGE_VAL
  81.  
  82. #ifdef _M68881
  83. #include <math-68881.h>
  84. #endif
  85.  
  86. #if defined(__GNUC__) && (!defined(__cplusplus))
  87. #ifndef max
  88. #define max(x,y) ({typeof(x) _x=(x); typeof(y) _y=(y); if (_x>_y) _y=_x; _y;})
  89. #define min(x,y) ({typeof(x) _x=(x); typeof(y) _y=(y); if (_x<_y) _y=_x; _y;})
  90. #endif
  91. #endif
  92.  
  93. #ifndef _COMPILER_H
  94. #include <compiler.h>
  95. #endif
  96.  
  97. #ifndef _M68881
  98. __EXTERN double    acos    __PROTO((double));
  99. __EXTERN double asin    __PROTO((double));
  100. __EXTERN double atan    __PROTO((double));
  101. __EXTERN double atanh    __PROTO((double));
  102. __EXTERN double cos    __PROTO((double));
  103. __EXTERN double cosh    __PROTO((double));
  104. __EXTERN double fabs    __PROTO((double));
  105. __EXTERN double dabs    __PROTO((double));
  106.  
  107. __EXTERN double exp    __PROTO((double));
  108. __EXTERN double log    __PROTO((double));
  109. __EXTERN double log10    __PROTO((double));
  110. __EXTERN double fmod    __PROTO((double, double));
  111. __EXTERN double sin    __PROTO((double));
  112. __EXTERN double sinh    __PROTO((double));
  113. __EXTERN double sqrt    __PROTO((double));
  114. __EXTERN double hypot   __PROTO((double, double));
  115. __EXTERN double tan    __PROTO((double));
  116. __EXTERN double tanh    __PROTO((double));
  117. __EXTERN double floor    __PROTO((double));
  118. __EXTERN double ceil    __PROTO((double));
  119. __EXTERN double rint    __PROTO((double));
  120.  
  121. __EXTERN double acosh    __PROTO((double));
  122. __EXTERN double asinh    __PROTO((double));
  123. __EXTERN double atan2    __PROTO((double, double));
  124. __EXTERN double pow    __PROTO((double, double));
  125. #endif
  126.  
  127. #ifndef __STRICT_ANSI__
  128.  
  129. #ifdef _M68881
  130. #  define dabs(x) fabs(x)
  131. #endif
  132.  
  133. __EXTERN double copysign    __PROTO((double, double));
  134. __EXTERN int matherr    __PROTO((struct exception *));
  135. __EXTERN double cabs    __PROTO((COMPLEX));
  136. __EXTERN COMPLEX cmult    __PROTO((COMPLEX, COMPLEX));
  137. __EXTERN COMPLEX csqrt    __PROTO((COMPLEX));
  138. #ifndef __GNUG__
  139. __EXTERN COMPLEX clog    __PROTO((COMPLEX));
  140. #endif
  141. __EXTERN COMPLEX cacos    __PROTO((COMPLEX));
  142. __EXTERN COMPLEX cadd    __PROTO((COMPLEX,COMPLEX));
  143. __EXTERN COMPLEX casin    __PROTO((COMPLEX));
  144. __EXTERN COMPLEX catan    __PROTO((COMPLEX));
  145. __EXTERN COMPLEX ccosh    __PROTO((COMPLEX));
  146. __EXTERN COMPLEX crcp    __PROTO((COMPLEX));
  147. __EXTERN COMPLEX csinh    __PROTO((COMPLEX));
  148. __EXTERN COMPLEX ctan    __PROTO((COMPLEX));
  149. __EXTERN COMPLEX ctanh    __PROTO((COMPLEX));
  150. __EXTERN COMPLEX cexp    __PROTO((COMPLEX));
  151. __EXTERN COMPLEX ccos    __PROTO((COMPLEX));
  152. __EXTERN COMPLEX csin    __PROTO((COMPLEX));
  153. __EXTERN COMPLEX cdiv    __PROTO((COMPLEX, COMPLEX));
  154. __EXTERN COMPLEX csubt    __PROTO((COMPLEX,COMPLEX));
  155.  
  156. __EXTERN int pmlcfs    __PROTO((int, int));
  157. __EXTERN int pmlcnt    __PROTO((void));
  158. __EXTERN int pmlerr    __PROTO((int));
  159. __EXTERN int pmllim    __PROTO((int));
  160. __EXTERN int pmlsfs    __PROTO((int, int));
  161. __EXTERN double poly    __PROTO((int, double *, double));
  162.  
  163. #endif /* __STRICT_ANSI__ */
  164.  
  165. #ifndef _M68881
  166. __EXTERN double modf    __PROTO((double, double *));
  167. __EXTERN double ldexp    __PROTO((double, int));
  168. __EXTERN double frexp    __PROTO((double, int *));
  169. #endif /* !_M68881 */
  170.  
  171. #if defined(__cplusplus)
  172. }
  173. #endif
  174.  
  175. #endif /* _MATH_H */
  176.